home *** CD-ROM | disk | FTP | other *** search
- ******************************************************************************
- * *
- * P-SOUND V x.yy © Sébald Loïc 1997-1998 *
- * *
- ******************************************************************************
-
- Coordonnées de l'auteur : Sébald Loïc
- 1 bis rue du stade
- 30820 Caveirac
- tel : 04 66 63 40 16
-
- Présentation :
- ¯¯¯¯¯¯¯¯¯¯¯¯¯¯
- La version complète comprend une carte à bracher sur le port // et un
- programme PSOUND.PRG à installer dans le dossier AUTO.
-
- La carte est un convertisseur N/A dans sa version la plus simple. La qualité
- de la restitution est équivalente à celle d'une SoundBlaster 8 Bits.
-
-
- Matériel requis :
- ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
- Un Hadès 40/60 ( Pour les autres, il n'y a aucune utilité d'une telle
- carte ... ) et une paire d'enceintes amplifiées ou une chaine HIFI.
- Le volume en sortie de la carte étant faible, il faut une amplification.
-
- Utilisation :
- ¯¯¯¯¯¯¯¯¯¯¯¯¯
- Pour l'utilisateur, il n'y a rien d'autre à faire que brancher la carte
- et copier les fichiers PSOUND.PRG et PSOUND.INF dans le dossier AUTO
- ( L'ordre dans le dossier AUTO est sans importance, toutefois, si vous voulez
- jouer un échantillon au boot, il vaut mieux les mettre dans les premiers. )
-
- Les programmes qui reconnaitront la présence du driver enverront les
- données vers la sortie standard. ( Beaucoup plus rapide que par le YAMAHA et
- de meilleure qualité.)
-
- La version complète ( Driver + carte ) est disponible pour 100FF .
- Le driver seul est disponible pour 50FF. ( Frais de port inclus )
-
- Lisez le fichier PSOUND.INF pour choisir les sorties et options désirés.
-
- Programmation :
- ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
- Le driver rajoute plusieurs fonctions dans le XBIOS. Pour reconnaitre sa
- présence, il suffit de vérifier que le Cookie "PSND" se trouve dans le
- Cookie Jar.
-
- La nouvelle fonction du XBIOS pouvant être modifiée dans le futur, il est
- impératif de prendre sa valeur dans les 2 octets après "PSND" dans le
- Cookie Jar. De cette manière, quel que soit le numéro de la fonction, vous
- serez sûr de ne pas avoir à modifier vos programmes.
-
- En assembleur :
- '
- ' a0=adresse du Cookie "PSND"
- '
- ' move.w 4(a0),Xbios_vector -> Xbios_vector contient maintenant
- ' Le numéro de fonction du P-Sound
- ' dans le XBIOS.
-
- Les 2 octets suivant sont:
- bit 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
- |_____________________| |_____________________|
-
- N° Version majeur N° Version mineur
-
- Ex : $02 $3e
-
- le mot est $023e ( 574 en décimal ), la version est 2.62
- ($3e hexa = 62 décimal )
-
- Le vecteur XBIOS englobe les sous-fonctions suivantes :
-
- #1 Replay once Joue un échantillon 8 bits NON signé
- #2 Replay loop Joue un échantillon en boucle 8 bits NON signé
- #3 Replay frame Joue une série d'échantillons 8 bits NON signé
- #4 Stop replay Arrête la reproduction sonore
- #5 Convert_sm_8 Conversion d'un échantillon Stéréo en Mono 8 bits NON signé
- #6 Change_preset Permet de modifier à volonté la fréquence N°16
- #7 Convert_sm_16 Conversion d'un échantillon Stéréo en Mono 16 bits signé
- #8 Sign\Unsign Signer ou Déssigner un échantillon 8 bits
- #9 Resample_8_bits Rééchantillonner un sample 8 bits NON signé
- #10 Intel/motorola Passer du format intel au format motorola ( 16 bits )
- #11 Replay once Joue un échantillon 16 bits signé
- #12 Replay loop Joue un échantillon en boucle 16 bits signé
- #13 Replay frame Joue une série d'échantillons 16 bits signé
- #14 Maximize_8_bits Augmenter le volume au maximum sans distorsions sur 8 bits
- #15 Maximize_16_bits Augmenter le volume au maximum sans distorsions sur 16 bits
- #16 Resample_16_bits Rééchantillonner un sample 16 bits signé
- #Nb Filtre Fonction de filtrage ( non implémentée à ce jour )
-
-
- Les paramètres sont passés par la pile comme tout autre fonction du XBIOS.
- L'appel peut se faire en mode utilisateur ou superviseur
- ¯¯¯¯¯¯¯¯¯¯¯
- Les fonction qui prennent comme paramètre l'adresse d'un buffer permettent
- d'avoir l'échantillon original d'un coté et l'échantillon modifié d'un autre.
- ( Seule la fonction resample lorsque la taille d'arrivée est supérieure à la
- taille de départ nécessite une adresse de buffer distincte de l'adresse de
- l'échantillon.)
-
- D0 contient en retour un pointeur sur le nombre d'échantillons restant à
- jouer. Le registre a0 contient au retour de la fonction un pointeur sur
- l'échantillon en cours de restitution. Ces paramètres de retour sont valables
- pour toutes les fonctions de replay.
-
- Un petit example :
- |
- |
- trap #14
- lea nb(sp),sp
-
- pour attendre la fin pour récupérer l'echantillon courant
-
- move.l d0,a1 move.l (a0),a1
- wait_end move.b (a1),dn ; échantillon
- tst.l (a1) oscilloscope...
- bne wait_end
-
-
- Liste des fonctions :
- ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
-
- Replay once
-
- move.l #sample_start,-(sp) ; Adresse début du sample
- move.l #sample_end,-(sp) ; Adresse fin du sample
- move.w #Frequence,-(sp) ; Frequence du replay
- move.w #1,-(sp) ; Fonction #1
- move.w Xbios_vector,-(sp) ; Vecteur du Xbios
- trap #14 ; GO !
- lea 14(sp),sp ; Corrige la pile
- tst.l d0 ; -1 si erreur
- bmi error
- move.l d0,a1
- |
- |
- tst.l (a1)
- beq fin ; Plus d'échantillons à jouer...
-
- Replay loop
-
- move.l #sample_start,-(sp) ; Adresse début du sample
- move.l #sample_end,-(sp) ; Adresse fin du sample
- move.w #Frequence,-(sp) ; Frequence du replay
- move.w #2,-(sp) ; Fonction #2
- move.w Xbios_vector,-(sp) ; Vecteur du Xbios
- trap #14 ; GO !
- lea 14(sp),sp ; Corrige la pile
- tst.l d0 ; -1 si erreur
- bmi error
- move.l d0,a1 ; Adresse contenant le nombre
- ; d'échantillons restants à
- ; Jouer
-
- Ceci peut servir pour une routine soundtrack ou toute application qui aurait
- besoin d'un buffer tournant.
-
- Replay_frame
-
- move.l #frame_adress,-(sp) ; Adresse du Frame
- move.w #Frequence,-(sp) ; Une seule fréquence pour tous
- move.w #3,-(sp) ; Fonction #3
- move.w Xbios_vector,-(sp) ; Vecteur du Xbios
- trap #14 ; Appel du Xbios
- lea 10(sp),sp ; Corrige la pile
-
- composition d'un frame :
-
- Adresse du frame 0 : Start 1 , End 1 , Nb ; pointeur dans le frame
- 12 : Start 2 , End 2 , Nb ; par le driver.
- etc
- : ReStart , XXXXX , En
-
- Start x = adresse début d'un sample
- End x = adresse fin d'un sample
- Nb = Nombre de fois ou le sample est rejoué avant la position suivante
-
- En = -1 Derniere position du frame
- Restart = Position du rebouclage dans le frame ( multiple de 12 )
- XXXX = Non utilisé
-
- Ceci peut servir pour une routine soundtrack ou toute application qui aurait
- besoin d'un double buffer tournant.
-
-
- Stop replay
-
- move.w #4,-(sp) ; Fontion #4
- move.w Xbios_vector,-(sp)
- trap #14
- addq.l #4,sp
-
- Stoppe la reproduction sonore.
-
- Convert_sm 8 bits non signé = #5 16 bits signé = #7
-
- move.l #sample_start,-(sp)
- move.l #sample_end,-(sp)
- move.l #Buffer,-(sp)
- move.w #5 ou #7,-(sp)
- move.w Xbios_vector,-(sp)
- trap #14
- lea 16(sp),sp
-
- L'adresse du Buffer peut être égale à celle du Sample_start, sinon
- Le sample original n'est pas modifié. Le résultat sera stocké à l'adresse
- du Buffer.
-
- Change preset
-
- move.w #Val,-(sp)
- move.w #6,-(sp) ; fonction 6
- move.w Xbios_vector,-(sp)
- trap #14
- addq.l #6,sp
-
- Permet d'assigner une valeur personnelle à la fréquence N°16 des fréquences
- disponibles
-
- Val est une donnée sur 2 octets :
- octet 0 = Valeur du prédiviseur du Timer A
- octet 1 = Valeur du divisviseur du Timer A
-
- La fréquence de base du MFP est 2457600 Hz
- le prédivieurs peut avoir les valeurs : 1 pour une prédivision par 4
- 2 10
- 3 16
- 4 50
- 5 64
- 6 100
- 7 200
- Ex : Pour une fréquence de 40960 Hz
-
- Val = $010f ( Prédiviseur de 4, diviseur de 15 ) 40960 = (2457600/4)/15
-
- Sign/Unsign
-
- move.l #sample_start,-(sp)
- move.l #sample_end,-(sp)
- move.l #Buffer,-(sp)
- move.w #8,-(sp)
- move.w Xbios_vector,-(sp)
- trap #14
- lea 16(sp),sp
-
- Permet de signer/dessigner un sample 8 Bits MONO. Cette fonction est
- réversible.
-
- Resample 8 bits non signé = #9 16 bits signé = #16
-
- move.l #sample_start,-(sp)
- move.l #sample_end,-(sp)
- move.l #Buffer,-(sp)
- move.w #freq_start,-(sp)
- move.w #freq_dest,-(sp)
- move.w #9 ou #16 ,-(sp)
- move.w Xbios_vector,-(sp)
- trap #14
- lea 20(sp),sp
-
- Permet de changer la frequence de base d'un sample. Si la frequence de départ
- est supérieure à la fréquence d'arrivée, l'adresse du Buffer peut etre
- égale à celle du sample.
- Si la frequence d'arrivée est supérieure à la fréquence de départ, l'adresse
- du buffer NE DOIT PAS etre égale à celle du sample. Dans ce cas, il y a
- interpolation linéaire des valeurs.
-
- Little endian to motorola
-
- move.l #sample_start,-(sp)
- move.l #sample_end,-(sp)
- move.l #buffer,-(sp)
- move.w #10,-(sp)
- move.w Xbios_vector,-(sp)
- trap #14
- lea 16(sp),sp
-
- Comme pour signer/dessigner, cette fonction est réversible. Elle permet de
- permuter les octets de poid fort avec les octets de poid faible.
- Si vous le voulez, l'adresse du buffer peut être égale à celle du sample.
-
- Les fonction Replay 16 bits n'utilisent que des échantillons signés.
- La conversion vers le format 8 bits se fait en temps réel si la sortie utiliée
- est une sortie 8 bits ( Yamaha, port imprimante ou ST Replay 8 bits )
-
- maximize Sample 8 bits non signé = #14 16 bits signé = #15
-
- move.l #sample_start,-(sp)
- move.l #sample_end,-(sp)
- move.l #buffer,-(sp)
- move.w #14 ou #15 ,-(sp)
- move.w Xbios_vector,-(sp)
- trap #14
- lea 16(sp),sp
-
- Filtres
-
- Je verrais cela plus tard...
-
- Les fréquences disponibles sont :
-
- 0 8192
- 1 9600
- 2 11170
- 3 12288
- 4 12538
- 5 12800
- 6 16384
- 7 24576
- 8 25600
- 9 30720
- 10 38400 Maxi pour le TT
- 11 40960
- 12 49152
- 13 51200
- 14 61440 Sans problème sur HADES 60
- 15 Free preset ( L'hades 60 plafonne vers 100 Ko/s
- et sous interruptions SVP ! )
-
- Remerciements :
-
- Baranger Emmanuel EB-MODEL, EB-SOUND
- François Le Coat EUREKA,POV
- Guillaume Tello M-PLAYER
- Didier Méquignon ANI PLAYER, SONDIGIT
- Eric Reboux START-IT,FIND-IT,VIEW-IT Etc...
- Marc Gabard MODALYSER, XCOMMAND, Etc ... ( Soutient moral, physique,
- financier, politique et d'autres encore ... )
-
-